package com.rxst.msg.server;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.rxst.msg.dto.save.menu.UpdateMenuAuthDto;
import com.rxst.msg.dto.search.MsgxMenuSearchDto;
import com.rxst.msg.entity.MsgxMenuEntity;
import com.rxst.msg.vo.MsgxMenuVo;
import com.rxst.msg.vo.menu.MenuFunctionVo;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单表
 *
 * @author rxst
 * @email rxst@gmail.com
 * @date 2021-08-19 11:47:01
 */
public interface MsgxMenuService extends IService<MsgxMenuEntity> {
    /**
     * 列表
     *
     * @param vo
     * @return
     */
    List<MsgxMenuVo> list(MsgxMenuSearchDto vo);

    /**
     * 分页
     *
     * @param vo
     * @return
     */
    PageInfo<MsgxMenuVo> page(MsgxMenuSearchDto vo);

    /**
     * 保存
     *
     * @param dto 参数
     * @return 操作状态
     */
    Boolean saveEntity(MsgxMenuEntity dto);

    /**
     * 批量新增
     *
     * @param list 条件
     * @return 操作状态
     */
    Boolean saveEntityBatch(List<MsgxMenuEntity> list);

    /**
     * 修改
     *
     * @param dto 参数
     * @return 操作状态
     */
    Boolean updateEntity(MsgxMenuEntity dto);

    /**
     * 批量修改
     *
     * @param list 条件
     * @return 操作状态
     */
    Boolean updateEntityBatch(List<MsgxMenuEntity> list);

    /**
     * 逻辑删除
     *
     * @param id 主键
     */
    void deleteLogic(Long id);

    /**
     * 批量逻辑删除
     *
     * @param ids 主键集合
     */
    void deleteLogicByIds(List<Long> ids);

    /**
     * 编辑用户权限功能
     *
     * @param updateAdminAuthor
     *
     */
    void updateMenuByUserId(UpdateMenuAuthDto updateAdminAuthor);

    /**
     * 菜单树
     * @param userId 用户id
     * @return 菜单树
     */
    List<MenuFunctionVo> tree(String userId);
}

